package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.domain.FootUserFormation;
import org.footballmanager.pandafootball.system.form.impl.FootUserFormationSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;

public interface FootUserFormationService extends BaseService<FootUserFormation> {
    /**
     * 查询
     *
     * @param entityname                  实体类名
     * @param map                         参数
     * @param footUserFormationSearchForm 条件
     */
    void search(String entityname, Model map, FootUserFormationSearchForm footUserFormationSearchForm);

    /**
     * 删除所有
     *
     * @param footUserFormationSearchForm 条件
     * @param request                     请求
     */
    void deleteAll(FootUserFormationSearchForm footUserFormationSearchForm, HttpServletRequest request);

    /**
     * 根据条件查询记录列表
     *
     * @param footUserFormationSearchForm 条件
     * @return 记录列表
     */
    List<FootUserFormation> findall(FootUserFormationSearchForm footUserFormationSearchForm);

    /**
     * 根据主键获取记录
     *
     * @param id 主键
     * @return 记录
     */
    FootUserFormation get(Serializable id);

    /**
     * 添加球队默认阵型
     *
     * @param user    用户实体类
     * @param request 请求
     */
    void saveNewFormation(FootUser user, HttpServletRequest request);

    /**
     * 根据用户主键删除关系记录
     *
     * @param id      用户主键
     * @param request 请求
     */
    void deleteByUserId(Long id, HttpServletRequest request);

    /**
     * 根据用户主键获取默认球队阵型
     *
     * @param id 用户主键
     * @return 默认球队阵型
     */
    FootUserFormation findByUserId(Long id);

    /**
     * 根据用户主键获取默认球队阵型列表
     *
     * @param id 用户主键
     * @return 球队阵型列表
     */
    List<FootUserFormation> findByUserIdWithoutStatus(Long id);
}